AWS CDK を用いて作成した VPC・Subnet にリソース名をつける方法を教えてください

AWS CDK を用いて作成した VPC・Subnet にリソース名をつける方法を教えてください

VPC の場合 vpc_name プロパティを、Subnet の場合タグの付与をお試しください。
Clock Icon2024.07.26

困っていること

AWS CDK を用いて作成した VPC や Subnet をコンソール画面上で確認したところ、意図したリソース名が付与されていない状態となります。
どのように記載することでリソース名を付けることが可能ですか。

どう対応すればいいの?

VPC の場合、vpc_name プロパティを Subnet の場合タグの付与をお試しください。

リソース作成時に、第二引数として与えられる id プロパティはドキュメントに記載の通り、識別子でありリソース名とは異なります。

https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/identifiers.html

最も一般的な識別子である はid、コンストラクトオブジェクトをインスタンス化するときに 2 番目の引数として渡される識別子です。

リソース名を付与する方法は作成するリソースにより異なりますが、VPC の場合 vpc_name プロパティを、Subnet の場合、キーを Name としたタグを付与いただくことで作成されたリソースにリソース名を付与いただけます。

https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_ec2/Vpc.html

vpc_name (Optional[str]) – The name of the VPC. If given, will import the VPC with this name. Default: Don’t filter on vpcName

やってみた

実際に、AWS CDK を用いて VPC と Subnet を作成し、上記の方法でリソース名の付与を行ってみます。
下記のチュートリアルを参考に、Python にて実装を行っていきます。

https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/hello_world.html

今回は以下のようなコードになりました。

from aws_cdk import (
    Stack,
    aws_ec2 as ec2,
    Tags
)
from constructs import Construct

class HelloCdkStack(Stack):

    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        # VPC
        vpc = ec2.Vpc(
            self,
            "testvpc",
            cidr="xxx.xxx.x.x/xx",
            max_azs=2,
            nat_gateways=0,
            subnet_configuration=[],
            # vpc_name="testvpc"
        )

        # Subnet
        vpc_subnets=[
            ec2.Subnet(
                self,
                "test_Public1",
                availability_zone="ap-northeast-1a",
                cidr_block="xxx.xxx.x.x/xx",
                vpc_id=vpc.vpc_id
        )]

        # リソース名付与用のタグ付
        # Tags.of(vpc_subnets[0]).add("Name", "test_Public1")

まずは、タグ付なし & vpc_name プロパティなしで実行し、リソース名が正しく付与されないことを確認します。
作成されたリソースは以下のようになりました。

  • VPC
    スクリーンショット 2024-07-26 16.44.26
  • Subnet
    スクリーンショット 2024-07-26 16.48.38

上記のように、スタック名も含めたリソース名が自動で付与されています。

続いて、上記のソースコードよりコメントアウトしている部分を削除し再度デプロイを行います。
結果は以下のようになりました。

  • VPC
    スクリーンショット 2024-07-26 16.53.39
  • Subnet
    スクリーンショット 2024-07-26 16.53.49

ソースコード内に記載したリソース名が付与されていることが確認できました。

参考資料

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.